package rpcx_label_center

import (
	"fmt"
	"time"

	"gobase/rpcx_work_flow"
)

// 图片表，图片存储状态
const (
	StatusBaseImage预删除    = -10
	StatusBaseImage下载失败   = -1
	StatusBaseImage未下载    = 10
	StatusBaseImage下载至磁盘  = 20
	StatusBaseImage上传至OSS = 30
)

// 请求 创建
type ReqCreateBaseImage struct {
	ImageName      string `json:"ImageName"`      //图片文件名称（图片前缀_国标Id_结构化中心Id_媒体中心Id_抽图时间戳_标准时间显示.扩展名)
	Result         Result `json:"Result"`         //工人智能识别返回的内容
	ImageUrlStruct string `json:"ImageUrlStruct"` //图片下载地址 ，透传字段,人工智能不处理
	PassInfoStr    string `json:"PassInfoStr"`    //与之关联的订阅Id集，透传字段,人工智能不处理

	PassInfo         rpcx_work_flow.PassInfo `json:"-"` //与之关联的订阅Id集，透传字段,人工智能不处理
	TimeImage        TimeImage               `json:"-"`
	BodyBytes        []byte                  `json:"-"` //图片文件内容
	JsonDeviceUpload string                  `json:"-"`
}

func (t *ReqCreateBaseImage) GetKey() string {
	return fmt.Sprintf("%s_%s", t.ImageName, t.PassInfo.IdRecScheme)
}

// 请求 删除图片
type ReqDeleteBaseImage struct {
	ImageName string `json:"ImageName"`     //图片文件名称（图片前缀_国标Id_结构化中心Id_媒体中心Id_抽图时间戳_标准时间显示.扩展名)
	Log       Log    `json:"Log,omitempty"` //追踪日志
}

// 请求 弹幕数据
type ReqDrawBaseImage struct {
	DeviceId  string    `json:"DeviceId"`            //设备国标Id
	TypeDraw  int8      `json:"TypeDraw"`            //弹幕类型: 历史=1 实时=2
	TimeStart time.Time `json:"TimeStart,omitempty"` //历史类型有效:开始时间
	TimeEnd   time.Time `json:"TimeEnd,omitempty"`   //历史类型有效:结束时间
}

type RespDrawBaseImage struct {
	DeviceId  string    `json:"DeviceId"`  //设备国标Id
	TypeDraw  int8      `json:"TypeDraw"`  //弹幕类型: 历史=1 实时=2
	TimeStart time.Time `json:"TimeStart"` //历史类型有效:开始时间
	TimeEnd   time.Time `json:"TimeEnd"`   //历史类型有效:结束时间
	Restults  []Result  `json:"Restults"`  //历史类型有效:结束时间
}

type Label struct {
	IdScheme    int64   `json:"IdScheme"`    //识别码,与标签Id对等
	Value       string  `json:"Value"`       //标签结果值,文字简述
	Confidence  float64 `json:"Confidence"`  //置信度
	Description string  `json:"Description"` //文字描述
}

type Result struct {
	DeviceId string `json:"DeviceId"` //国标ID
	Label    Label  `json:"Label"`    //标签信息
	Tag      Frame  `json:"Tag"`      //图片弹幕绘制信息
}
